Personal computer systems in general and IBM personal computers in particular have attained widespread use for providing computer power to many segments of today's modern society. Personal computer systems can usually be defined as a desk top, floor standing, or portable microcomputer that consists of a system unit having a single system processor and associated volatile and non-volatile memory, a display monitor, a keyboard, one or more diskette drives, a fixed disk storage, and an optional printer. One of the distinguishing characteristics of these systems is the use of a motherboard or system planar to electrically connect these components together. These systems are designed primarily to give independent computing power to a single user and are inexpensively priced for purchase by individuals or small businesses. Examples of such personal computer systems are IBM's PERSONAL COMPUTER AT and IBM's PERSONAL SYSTEM/2 Models 25, 30, L40SX, 50, 55, 56, 57, 65, 70, 80, 90 and 95.
These systems can be classified into two general families. The first family, usually referred to as Family I Models, use a bus architecture exemplified by the IBM PERSONAL COMPUTER AT and other "IBM compatible" machines. The second family, referred to as Family II Models, use IBM's MICRO CHANNEL bus architecture exemplified by IBM's PERSONAL SYSTEM/2 Models 50 through 95. The Family I models typically have used the popular INTEL 8088 or 8086 microprocessor as the system processor. These processors have the ability to address one megabyte of memory. The Family II models typically use the high speed INTEL 80286, 80386, and 80486 microprocessors which can operate in a real mode to emulate the slower speed INTEL 8086 microprocessor or a protected mode which extends the addressing range from 1 megabyte to 4 Gigabytes for some models. In essence, the real mode feature of the 80286, 80386, and 80486 processors provide hardware compatibility with software written for the 8086 and 8088 microprocessors.
As the reader knowledgeable about computer systems will understand, much of the operation of a personal computer system is concerned with the transfer of data from one point within the system to another. In a number of instances where such transfers are to occur, transfers are made through registers known as FIFO (for "first in, first out") registers. For various types of transfers, it has been known to monitor the "fill level" of a FIFO register, by registering in an associated register the amount of data retained in a FIFO register at any given moment.
As the development of personal computers has advanced, there have been proposals for certain standards to be established among makers and users of such apparatus for the purpose of enabling greater exchangability of components and the like. One such standard which has achieved some broad acceptance is the small computer systems interface (SCSI) standard for data communication to and from storage memory devices. For the present purposes, "storage memory devices" is defined broadly to include all devices capable of storing data in digital form, with particular emphasis on such devices as fixed or removable media electromagnetic storage devices (also known as hard and floppy disk drives), electro-optical, tape and other storage devices. SCSI controllers (herein also called "data flow controllers") have been known and used prior to this invention, and will be familiar to the knowledgeable reader. SCSI controllers are known to be one example of an environment of use of FIFO registers for data transfer, although there are others.
In prior personal computer systems, SCSI controllers have typically been arranged as option or accessory devices, accessed by the system through the accessory or input/output or I/O bus. More recently, it has been contemplated to provide a SCSI controller as a single very large scale integrated (VLSI) device or application specific integrated circuit (ASIC) chip, and to provide for connection of that controller directly with the local processor bus. The purpose of so providing such a controller is to achieve enhanced performance in terms of expedited data transfers.
SCSI controllers are one example of a device which is known as a "bus master". As described at greater length hereinafter, a plurality of bus master devices may be provided in a personal computer system (of either Family I or Family II type) in an effort to enhance system performance. Where such a plurality of bus master devices are present, the devices arbitrate for access to and control of the data transfer bus of the system. The efficiency with which the bus master devices and the arbitration control point through which arbitration occurs allocate use of the bus has a great deal to do with the performance achieved by the system.